home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-07-28 | 21.8 KB | 788 lines | [TEXT/MPS ] |
- /*
- File: OCEObjectsTests.cp
-
- Copyright: © 1991-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Part of the AOCE Sample SMSAM Package. Consult the license
- which came with this software for your specific legal rights.
-
- */
-
-
-
- #if debug
-
- #ifndef __OCEOBJECTSTESTS__
- #include "OCEObjectsTests.h"
- #endif
-
- #ifndef __OCEOBJECTS__
- #include "OCEObjects.h"
- #endif
-
- #ifndef __STRING__
- #include "String.h"
- #endif
-
- #ifndef __RAMFILE__
- #include "RAMFile.h"
- #endif
-
- #ifndef __HANDLEOBJECTOWNER__
- #include "HandleObjectOwner.h"
- #endif
-
- #pragma segment OCEObjectsTests
-
- #ifndef THINK_CPLUS
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TRString& r, const char* c )
- {
- ASSERT_RETURN_ZERO ( r == c );
- ASSERT_RETURN_ZERO ( !(r != c) );
- ASSERT_RETURN_ZERO ( !(r > c) );
- ASSERT_RETURN_ZERO ( !(r < c) );
- const unsigned long rLength = r.GetLength ();
- ASSERT_RETURN_ZERO ( rLength == ::strlen ( c ) );
- ASSERT_RETURN_ZERO ( ::strcmp ( r, c ) == 0 );
- for ( unsigned short index = 0; index < rLength; index++ )
- ASSERT_RETURN_ZERO ( r [ index ] == c [ index ] );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TRString& r, const StringPtr p )
- {
- ASSERT_RETURN_ZERO ( r == p );
- ASSERT_RETURN_ZERO ( !(r != p) );
- ASSERT_RETURN_ZERO ( !(r > p) );
- ASSERT_RETURN_ZERO ( !(r < p) );
- const unsigned long rLength = r.GetLength ();
- ASSERT_RETURN_ZERO ( rLength == Length ( p ) );
- ASSERT_RETURN_ZERO ( ::EqualString ( r, p, true, true ) );
- for ( unsigned short index = 0; index < rLength; index++ )
- ASSERT_RETURN_ZERO ( r [ index ] == p [ index + 1 ] );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean ConstructTest ( const TRString& r1 )
- {
- TRString r2 ( r1 );
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TRString r3 ( (const RString*) r1 );
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TRString r4 ( (const RString&) r1 );
- ASSERT_RETURN_ZERO ( r1 == r4 );
- TRString r5 ( (const char*) r1 );
- ASSERT_RETURN_ZERO ( r1 == r5 );
- TRString r6 ( (const StringPtr) r1 );
- ASSERT_RETURN_ZERO ( r1 == r6 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean AssignTest ( const TRString& r1 )
- {
- TRString r2 = r1;
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TRString r3 = (const RString*) r1;
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TRString r4 = (const RString&) r1;
- ASSERT_RETURN_ZERO ( r1 == r4 );
- TRString r5 = (const char*) r1;
- ASSERT_RETURN_ZERO ( r1 == r5 );
- TRString r6 = (const StringPtr) r1;
- ASSERT_RETURN_ZERO ( r1 == r6 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean HalfEqualTest ( const TRString& r1, const TRString& r2 )
- {
- ASSERT_RETURN_ZERO ( r1.IsValid () );
- unsigned long r1Length = r1.GetLength ();
- ASSERT_RETURN_ZERO ( r1Length == r2.GetLength () );
- ASSERT_RETURN_ZERO ( r1.GetKind () == r2.GetKind () );
- ASSERT_RETURN_ZERO ( r1.GetScript () == r2.GetScript () );
- for ( unsigned short index = 0; index < r1Length; index++ )
- ASSERT_RETURN_ZERO ( r1 [ index ] == r2 [ index ] );
- ASSERT_RETURN_ZERO ( r1 == r2 );
- ASSERT_RETURN_ZERO ( !(r1 != r2) );
- ASSERT_RETURN_ZERO ( !(r1 > r2) );
- ASSERT_RETURN_ZERO ( !(r1 < r2) );
- ASSERT_RETURN_ZERO ( ::ConstructTest ( r1 ) );
- ASSERT_RETURN_ZERO ( ::AssignTest ( r1 ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TRString& r1, const TRString& r2 )
- {
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( r1, r2 ) );
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( r2, r1 ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TRString& r1, const RString& r2 )
- {
- ASSERT_RETURN_ZERO ( ::EqualTest ( r1, TRString ( r2 ) ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- extern Boolean StreamTest ( const TRString& r );
-
- Boolean ValidityTest ( const TRString& r )
- {
- ASSERT_RETURN_ZERO ( ::EqualTest ( r, (const char*) r ) );
- ASSERT_RETURN_ZERO ( ::EqualTest ( r, (const StringPtr) r ) );
-
- TRString r1 ( (const RString*) r );
- ASSERT_RETURN_ZERO ( ::EqualTest ( r1, r ) );
-
- TRString r5 = (const RString*) r;
- ASSERT_RETURN_ZERO ( ::EqualTest ( r5, r ) );
-
- RString* rs = r.GetNewRString ();
- ASSERT_RETURN_ZERO ( rs != nil );
- TRString r2 ( rs );
- ASSERT_RETURN_ZERO ( ::EqualTest ( r, r2 ) );
- r1 = *rs;
- ASSERT_RETURN_ZERO ( ::EqualTest ( r1, r2 ) );
- ::DeallocatePtr( (Ptr) rs );
-
- StringPtr ps = r.GetNewStringPtr ();
- TRString r3 ( ps );
- ASSERT_RETURN_ZERO ( ::EqualTest ( r3, ps ) );
- ::DeallocatePtr( (Ptr) ps );
-
- char* cs = r.GetNewString ();
- TRString r4 ( cs );
- ASSERT_RETURN_ZERO ( ::EqualTest ( r4, cs ) );
- ::DeallocatePtr( (Ptr) cs );
-
- ASSERT_RETURN_ZERO ( ::StreamTest ( r1 ) );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean StreamTest ( const TRString& r )
- {
- TAbstractFile* file = new TRamFile;
- THandleObjectOwner owner ( file );
-
- // write the object and and rewind
- ASSERT_RETURN_ZERO ( r.Write ( *file ) );
- ASSERT_RETURN_ZERO ( file->SetPosition ( fsFromMark, 0 ) == noErr );
-
- // read a new object
- TRString r2;
- ASSERT_RETURN_ZERO ( r2.Read ( *file ) );
-
- // make sure they are equal
- ASSERT_RETURN_ZERO ( ::EqualTest ( r, r2 ) );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- void TRStringTests ()
- {
- // test data
- const char* c1 = "Sample String 1";
- const StringPtr p1 = "\pSample String 1";
- const char* c2 = "This is the third sample string!";
- const StringPtr p2 = "\pThis is another sample string?!?!";
-
- // constructors
- TRString rc1 ( c1 );
- ASSERT_RETURN ( ::ValidityTest ( rc1 ) );
-
- TRString rp1 ( p1 );
- ASSERT_RETURN ( ::ValidityTest ( rp1 ) );
- ASSERT_RETURN ( ::EqualTest ( rp1, rc1 ) );
-
- TRString rr1 ( rc1 );
- ASSERT_RETURN ( ::ValidityTest ( rp1 ) );
- ASSERT_RETURN ( ::EqualTest ( rr1, rc1 ) );
- ASSERT_RETURN ( ::EqualTest ( rr1, rp1 ) );
-
- // case setting
- rc1.MakeLowercase ();
- ASSERT_RETURN ( ::EqualTest ( rc1, "sample string 1" ) );
- rc1.MakeUppercase ();
- ASSERT_RETURN ( ::EqualTest ( rc1, "SAMPLE STRING 1" ) );
-
- // character setting
- chris << "The following ASSERT FAILED “IsValidIndex ( index )” is supposed to happen!\n";
- rc1 [ 15 ] = 'X'; // this should fail!
- ASSERT_RETURN ( ::EqualTest ( rc1, "SAMPLE STRING 1" ) );
- rc1 [ 14 ] = 'X'; // this should work!
- ASSERT_RETURN ( ::EqualTest ( rc1, "SAMPLE STRING X" ) );
- ASSERT_RETURN ( rc1 [ 14 ] == 'X' );
- rc1 [ 0 ] = 'Z'; // this should work!
- ASSERT_RETURN ( ::EqualTest ( rc1, "ZAMPLE STRING X" ) );
- ASSERT_RETURN ( rc1 [ 0 ] == 'Z' );
-
- // assignment
- rc1 = p2;
- ASSERT_RETURN ( ::EqualTest ( rc1, p2 ) );
-
- rc1 = c2;
- ASSERT_RETURN ( ::EqualTest ( rc1, c2 ) );
-
- rp1 = rc1;
- ASSERT_RETURN ( ::EqualTest ( rp1, rc1 ) );
-
- chris << "RString: " << rc1 << '\n';
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TCreationID& o, const CreationID& c )
- {
- ASSERT_RETURN_ZERO ( o == c );
- ASSERT_RETURN_ZERO ( !(o != c) );
- CreationID c2;
- o.GetID ( c2 );
- ASSERT_RETURN_ZERO ( c2.source == c.source );
- ASSERT_RETURN_ZERO ( c2.seq == c.seq );
- unsigned long source, seq;
- o.GetID ( source, seq );
- ASSERT_RETURN_ZERO ( source == c.source );
- ASSERT_RETURN_ZERO ( seq == c.seq );
- return true;
- }
-
- /***********************************|****************************************/
-
- void CreationIDTests ()
- {
- CreationID c;
- c.source = 1234;
- c.seq = 5678;
-
- // construction
- TCreationID o1 ( 1234, 5678 );
- ASSERT_RETURN ( ::EqualTest ( o1, c ) );
- ASSERT_RETURN ( !o1.IsNull () );
-
- TCreationID o2 ( c );
- ASSERT_RETURN ( ::EqualTest ( o2, c ) );
- ASSERT_RETURN ( o1 == o2 );
-
- TCreationID o3 = c;
- ASSERT_RETURN ( ::EqualTest ( o3, c ) );
- ASSERT_RETURN ( o3 == o2 );
-
- TCreationID o5 ( o1 );
- ASSERT_RETURN ( o5 == o1 );
-
- TCreationID o6 = o1;
- ASSERT_RETURN ( o6 == o1 );
-
- // streaming
- TAbstractFile* file = new TRamFile;
- THandleObjectOwner owner ( file );
- ASSERT_RETURN ( o1.Write ( *file ) );
- ASSERT_RETURN ( file->SetPosition ( fsFromMark, 0 ) == noErr );
- TCreationID o4;
- ASSERT_RETURN ( o4.IsNull () );
- ASSERT_RETURN ( o4.Read ( *file ) );
- ASSERT_RETURN ( ::EqualTest ( o4, c ) );
- ASSERT_RETURN ( o4 == o1 );
-
- chris << "CreationID: " << o1 << '\n';
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TDirDiscriminator& o, const DirDiscriminator& c )
- {
- ASSERT_RETURN_ZERO ( o == c );
- ASSERT_RETURN_ZERO ( !(o != c) );
- DirDiscriminator c2;
- o.GetDiscriminator ( c2 );
- ASSERT_RETURN_ZERO ( c2.signature == c.signature );
- ASSERT_RETURN_ZERO ( c2.misc == c.misc );
- OCEDirectoryKind signature;
- unsigned long misc;
- o.GetDiscriminator ( signature, misc );
- ASSERT_RETURN_ZERO ( signature == c.signature );
- ASSERT_RETURN_ZERO ( misc == c.misc );
- return true;
- }
-
- /***********************************|****************************************/
-
- void DirDiscriminatorTests ()
- {
- DirDiscriminator c;
- c.signature = 1234;
- c.misc = 5678;
-
- // construction
- TDirDiscriminator o1 ( 1234, 5678 );
- ASSERT_RETURN ( ::EqualTest ( o1, c ) );
-
- TDirDiscriminator o2 ( c );
- ASSERT_RETURN ( ::EqualTest ( o2, c ) );
- ASSERT_RETURN ( o1 == o2 );
-
- TDirDiscriminator o3 = c;
- ASSERT_RETURN ( ::EqualTest ( o3, c ) );
- ASSERT_RETURN ( o3 == o2 );
-
- TDirDiscriminator o5 ( o1 );
- ASSERT_RETURN ( o5 == o1 );
-
- TDirDiscriminator o6 = o1;
- ASSERT_RETURN ( o6 == o1 );
-
- // streaming
- TAbstractFile* file = new TRamFile;
- THandleObjectOwner owner ( file );
- ASSERT_RETURN ( o1.Write ( *file ) );
- ASSERT_RETURN ( file->SetPosition ( fsFromMark, 0 ) == noErr );
- TDirDiscriminator o4;
- ASSERT_RETURN ( o4.Read ( *file ) );
- ASSERT_RETURN ( ::EqualTest ( o4, c ) );
- ASSERT_RETURN ( o4 == o1 );
-
- chris << "DirDiscriminator: " << o1 << '\n';
- }
-
- /***********************************|****************************************/
-
- Boolean StreamTest ( const TPathName& p )
- {
- TAbstractFile* file = new TRamFile;
- THandleObjectOwner owner ( file );
- ASSERT_RETURN_ZERO ( p.Write ( *file ) );
- ASSERT_RETURN_ZERO ( file->SetPosition ( fsFromMark, 0 ) == noErr );
- TPathName p2;
- ASSERT_RETURN_ZERO ( p2.Read ( *file ) );
- ASSERT_RETURN_ZERO ( p == p2 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean ValidityTest ( const TPathName& p )
- {
- ASSERT_RETURN_ZERO ( p.IsValid () );
- ASSERT_RETURN_ZERO ( TPathName::IsValid ( (const PackedPathName*) p ) );
-
- const unsigned short count = p.GetNodeCount ();
- ASSERT_RETURN_ZERO ( count > 0 || p.IsNull () );
- ASSERT_RETURN_ZERO ( count > 0 && !p.IsNull () );
-
- for ( unsigned short index = 0; index < count; index++ )
- {
- ASSERT_RETURN_ZERO ( p.IsValidIndex ( index ) );
- ASSERT_RETURN_ZERO ( TRString ( p [ index ] ).IsValid () );
- }
-
- ASSERT_RETURN_ZERO ( !p.IsValidIndex ( count ) );
- ASSERT_RETURN_ZERO ( ::StreamTest ( p ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean ConstructTest ( const TPathName& r1 )
- {
- TPathName r2 ( r1 );
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TPathName r3 ( (const PackedPathName*) r1 );
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TPathName r4 ( (const PackedPathName&) r1 );
- ASSERT_RETURN_ZERO ( r1 == r4 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean AssignTest ( const TPathName& r1 )
- {
- TPathName r2 = r1;
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TPathName r3 = (const PackedPathName*) r1;
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TPathName r4 = (const PackedPathName&) r1;
- ASSERT_RETURN_ZERO ( r1 == r4 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean HalfEqualTest ( const TPathName& p1, const TPathName& p2 )
- {
- ASSERT_RETURN_ZERO ( ::ValidityTest ( p1 ) );
- const unsigned short count = p1.GetNodeCount ();
- ASSERT_RETURN_ZERO ( count == p2.GetNodeCount () );
- ASSERT_RETURN_ZERO ( p1 == p2 );
- ASSERT_RETURN_ZERO ( !(p1 != p2) );
-
- for ( unsigned short index = 0; index < count; index++ )
- ASSERT_RETURN_ZERO ( ::EqualTest ( TRString ( p1 [ index ] ), TRString ( p2 [ index ] ) ) );
-
- ASSERT_RETURN_ZERO ( ::ConstructTest ( p1 ) );
- ASSERT_RETURN_ZERO ( ::AssignTest ( p1 ) );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TPathName& p1, const TPathName& p2 )
- {
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( p1, p2 ) );
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( p2, p1 ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- void TPathnameTests ()
- {
- TRString r1 ( "ROOT" );
- TRString r2 ( "TRUNK" );
- TRString r3 ( "LEAF" );
-
- TPathName p0;
- ASSERT_RETURN ( p0.IsNull () );
-
- TPathName p1 ( r1 );
- chris << "PathName: " << p1 << '\n';
- ASSERT_RETURN ( p1.GetNodeCount () == 1 );
- p0 = p1;
- ASSERT_RETURN ( ::EqualTest ( p0, p1 ) );
- ASSERT_RETURN ( ::EqualTest ( r1, p1 [ 0 ] ) );
-
- TPathName p2 ( r1, r2 );
- chris << "PathName: " << p2 << '\n';
- ASSERT_RETURN ( p2.GetNodeCount () == 2 );
- p0 = p2;
- ASSERT_RETURN ( ::EqualTest ( p0, p2 ) );
- ASSERT_RETURN ( ::EqualTest ( r1, p2 [ 0 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r2, p2 [ 1 ] ) );
-
- TPathName p3 ( r1, r2, r3 );
- chris << "PathName: " << p3 << '\n';
- ASSERT_RETURN ( p3.GetNodeCount () == 3 );
- p0 = p3;
- ASSERT_RETURN ( ::EqualTest ( p0, p3 ) );
- ASSERT_RETURN ( ::EqualTest ( r1, p3 [ 0 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r2, p3 [ 1 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r3, p3 [ 2 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r1, p0 [ 0 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r2, p0 [ 1 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r3, p0 [ 2 ] ) );
-
- TPathName p4 ( p3 );
- chris << "PathName: " << p4 << '\n';
- ASSERT_RETURN ( ::EqualTest ( p4, p3 ) );
- ASSERT_RETURN ( ::EqualTest ( r1, p4 [ 0 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r2, p4 [ 1 ] ) );
- ASSERT_RETURN ( ::EqualTest ( r3, p4 [ 2 ] ) );
-
- ASSERT_RETURN ( ::EqualTest ( TRString ( "ROOT" ), p4 [ 0 ] ) );
- ASSERT_RETURN ( ::EqualTest ( TRString ( "TRUNK" ), p4 [ 1 ] ) );
- ASSERT_RETURN ( ::EqualTest ( TRString ( "LEAF" ), p4 [ 2 ] ) );
- }
-
- /***********************************|****************************************/
-
- Boolean ConstructTest ( const TRLI& r1 )
- {
- TRLI r2 ( r1 );
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TRLI r3 ( (const PackedRLI*) r1 );
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TRLI r4 ( (const PackedRLI&) r1 );
- ASSERT_RETURN_ZERO ( r1 == r4 );
- TRLI r5 ( (const RLI*) r1 );
- ASSERT_RETURN_ZERO ( r1 == r5 );
- TRLI r6 ( (const RLI&) r1 );
- ASSERT_RETURN_ZERO ( r1 == r6 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean AssignTest ( const TRLI& r1 )
- {
- TRLI r2 = r1;
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TRLI r3 = (const PackedRLI*) r1;
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TRLI r4 = (const PackedRLI&) r1;
- ASSERT_RETURN_ZERO ( r1 == r4 );
- TRLI r5 = (const RLI*) r1;
- ASSERT_RETURN_ZERO ( r1 == r5 );
- TRLI r6 = (const RLI&) r1;
- ASSERT_RETURN_ZERO ( r1 == r6 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean HalfEqualTest ( const TRLI& r1, const TRLI& r2 )
- {
- ASSERT_RETURN_ZERO ( r1.IsValid () );
- ASSERT_RETURN_ZERO ( TRLI::IsValid ( (const RLI*) r1 ) );
- ASSERT_RETURN_ZERO ( TRLI::IsValid ( (const PackedRLI*) r1 ) );
-
- ASSERT_RETURN_ZERO ( r1 == r2 );
- ASSERT_RETURN_ZERO ( !(r1 != r2) );
-
- TDirectory d1, d2;
- ASSERT_RETURN_ZERO ( r1.GetDirectory ( d1 ) );
- ASSERT_RETURN_ZERO ( r2.GetDirectory ( d2 ) );
- ASSERT_RETURN_ZERO ( d1 == d2 );
-
- TPathName p1, p2;
- ASSERT_RETURN_ZERO ( r1.GetPathName ( p1 ) );
- ASSERT_RETURN_ZERO ( r2.GetPathName ( p2 ) );
- ASSERT_RETURN_ZERO ( p1 == p2 );
-
- ASSERT_RETURN_ZERO ( r1.GetNode () == r2.GetNode () );
-
- ASSERT_RETURN_ZERO ( ::ConstructTest ( r1 ) );
- ASSERT_RETURN_ZERO ( ::AssignTest ( r1 ) );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TRLI& r1, const TRLI& r2 )
- {
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( r1, r2 ) );
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( r2, r1 ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- void TRLITests ()
- {
- TDirectory directory ( "directory", 'DISC' );
- TPathName path ( "root", "trunk", "leaf" );
- TRLI r1 ( directory, path, 1234 );
- TRLI r2 = r1;
- ASSERT_RETURN ( ::EqualTest ( r1, r2 ) );
-
- TDirectory dir2 ( "folder" ), dir3;
- r1.SetDirectory ( dir2 );
- ASSERT_RETURN ( r1.GetDirectory ( dir3 ) );
- ASSERT_RETURN ( dir2 == dir3 );
-
- TPathName path2 ( "pathname" ), path3;
- r1.SetPathName ( path2 );
- ASSERT_RETURN ( r1.GetPathName ( path3 ) );
- ASSERT_RETURN ( ::EqualTest ( path2, path3 ) );
-
- // streaming
- TAbstractFile* file = new TRamFile;
- THandleObjectOwner owner ( file );
- ASSERT_RETURN ( r1.Write ( *file ) );
- ASSERT_RETURN ( file->SetPosition ( fsFromMark, 0 ) == noErr );
- TRLI r3;
- ASSERT_RETURN ( r3.Read ( *file ) );
- ASSERT_RETURN ( ::HalfEqualTest ( r3, r1 ) );
-
- chris << "RLI: " << r1 << '\n';
- }
-
- /***********************************|****************************************/
-
- Boolean ConstructTest ( const TRecordID& r1 )
- {
- TRecordID r2 ( r1 );
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TRecordID r3 ( (const PackedRecordID*) r1 );
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TRecordID r4 ( (const PackedRecordID&) r1 );
- ASSERT_RETURN_ZERO ( r1 == r4 );
- TRecordID r5 ( (const RecordID*) r1 );
- ASSERT_RETURN_ZERO ( r1 == r5 );
- TRecordID r6 ( (const RecordID&) r1 );
- ASSERT_RETURN_ZERO ( r1 == r6 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean AssignTest ( const TRecordID& r1 )
- {
- TRecordID r2 = r1;
- ASSERT_RETURN_ZERO ( r1 == r2 );
- TRecordID r3 = (const PackedRecordID*) r1;
- ASSERT_RETURN_ZERO ( r1 == r3 );
- TRecordID r4 = (const PackedRecordID&) r1;
- ASSERT_RETURN_ZERO ( r1 == r4 );
- TRecordID r5 = (const RecordID*) r1;
- ASSERT_RETURN_ZERO ( r1 == r5 );
- TRecordID r6 = (const RecordID&) r1;
- ASSERT_RETURN_ZERO ( r1 == r6 );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean HalfEqualTest ( const TRecordID& r1, const TRecordID& r2 )
- {
- ASSERT_RETURN_ZERO ( r1.IsValid () );
- ASSERT_RETURN_ZERO ( TRecordID::IsValid ( (const PackedRecordID*) r1 ) );
- ASSERT_RETURN_ZERO ( TRecordID::IsValid ( (const RecordID*) r1 ) );
-
- ASSERT_RETURN_ZERO ( r1 == r2 );
- ASSERT_RETURN_ZERO ( !(r1 != r2) );
-
- TRString rs1, rs2;
- ASSERT_RETURN_ZERO ( r1.GetRecordName ( rs1 ) );
- ASSERT_RETURN_ZERO ( r2.GetRecordName ( rs2 ) );
- ASSERT_RETURN_ZERO ( rs1 == rs2 );
- ASSERT_RETURN_ZERO ( r1.GetRecordType ( rs1 ) );
- ASSERT_RETURN_ZERO ( r2.GetRecordType ( rs2 ) );
- ASSERT_RETURN_ZERO ( rs1 == rs2 );
-
- TCreationID c1, c2;
- ASSERT_RETURN_ZERO ( r1.GetCreationID ( c1 ) );
- ASSERT_RETURN_ZERO ( r2.GetCreationID ( c2 ) );
- ASSERT_RETURN_ZERO ( c1 == c2 );
-
- TPathName p1, p2;
- ASSERT_RETURN_ZERO ( r1.GetPathName ( p1 ) );
- ASSERT_RETURN_ZERO ( r2.GetPathName ( p2 ) );
- ASSERT_RETURN_ZERO ( p1 == p2 );
-
- TDirectory d1, d2;
- ASSERT_RETURN_ZERO ( r1.GetDirectory ( d1 ) );
- ASSERT_RETURN_ZERO ( r2.GetDirectory ( d2 ) );
- ASSERT_RETURN_ZERO ( d1 == d2 );
-
- TRLI rl1, rl2;
- ASSERT_RETURN_ZERO ( r1.GetRLI ( rl1 ) );
- ASSERT_RETURN_ZERO ( r2.GetRLI ( rl2 ) );
- ASSERT_RETURN_ZERO ( rl1 == rl2 );
-
- ASSERT_RETURN_ZERO ( r1.GetNode () == r2.GetNode () );
-
- ASSERT_RETURN_ZERO ( ::ConstructTest ( r1 ) );
- ASSERT_RETURN_ZERO ( ::AssignTest ( r1 ) );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean EqualTest ( const TRecordID& r1, const TRecordID& r2 )
- {
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( r1, r2 ) );
- ASSERT_RETURN_ZERO ( ::HalfEqualTest ( r2, r1 ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- #define PRINT_SIZE(C) chris << "sizeof ( " << #C << ") = " << sizeof ( C ) << '\n'
-
- static void ReportSizes ()
- {
- PRINT_SIZE ( TRString );
- PRINT_SIZE ( TDirectoryName );
- PRINT_SIZE ( TCreationID );
- PRINT_SIZE ( TDirDiscriminator );
- PRINT_SIZE ( TPathName );
- PRINT_SIZE ( TRLI );
- PRINT_SIZE ( TRecordID );
- }
-
- /***********************************|****************************************/
-
- void RunAllOCEOjectsTests ()
- {
- Boolean prev = ::GetOCEObjectsInternalValidityChecking ();
- ::SetOCEObjectsInternalValidityChecking ( true );
-
- ReportSizes ();
- TRStringTests ();
- CreationIDTests ();
- DirDiscriminatorTests ();
- TPathnameTests ();
- TRLITests ();
- TRecordIDTests ();
-
- ::SetOCEObjectsInternalValidityChecking ( prev );
- }
-
- /***********************************|****************************************/
-
- void TRecordIDTests ()
- {
- TRecordID r1 ( "name", "type", TPathName ( "a", "b" ), TDirectory ( "directory" ) );
- TRecordID r2 = r1;
-
- ASSERT_RETURN ( ::EqualTest ( r1, r2 ) );
-
- TRString s2 ( "new record name" ), s3;
- ASSERT_RETURN ( r1.SetRecordName ( s2 ) );
- ASSERT_RETURN ( r1.GetRecordName ( s3 ) );
- ASSERT_RETURN ( ::EqualTest ( s2, s3 ) );
-
- TRString s4 ( "new record type" ), s5;
- ASSERT_RETURN ( r2.SetRecordType ( s4 ) );
- ASSERT_RETURN ( r2.GetRecordType ( s5 ) );
- ASSERT_RETURN ( ::EqualTest ( s4, s5 ) );
-
- TCreationID id1 ( 1, 2 ), id2;
- ASSERT_RETURN ( r2.SetCreationID ( id1 ) );
- ASSERT_RETURN ( r2.GetCreationID ( id2 ) );
- ASSERT_RETURN ( ::EqualTest ( id1, id2 ) );
-
- TDirectory dir2 ( "new directory" ), dir3;
- ASSERT_RETURN ( r2.SetDirectory ( dir2 ) );
- ASSERT_RETURN ( r2.GetDirectory ( dir3 ) );
- ASSERT_RETURN ( dir2 == dir3 );
-
- TPathName path2 ( "new path" ), path3;
- ASSERT_RETURN ( r2.SetPathName ( path2 ) );
- ASSERT_RETURN ( r2.GetPathName ( path3 ) );
- ASSERT_RETURN ( ::EqualTest ( path2, path3 ) );
-
- // streaming
- TAbstractFile* file = new TRamFile;
- THandleObjectOwner owner ( file );
- ASSERT_RETURN ( r1.Write ( *file ) );
- ASSERT_RETURN ( file->SetPosition ( fsFromMark, 0 ) == noErr );
- TRecordID r3;
- ASSERT_RETURN ( r3.Read ( *file ) );
- ASSERT_RETURN ( ::EqualTest ( r3, r1 ) );
-
- chris << "RecordID #1: " << r1 << '\n';
- chris << "RecordID #2: " << r2 << '\n';
- }
-
- /***********************************|****************************************/
-
- #endif
-
- #endif // debug